package com.runen.infinitemovement.widget.imageview;

import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.RectF;
import android.util.AttributeSet;

import androidx.core.content.ContextCompat;

import com.runen.infinitemovement.R;


/**
 * 圆角矩形图片视图
 *
 * @author summer
 */
public class RoundedCornersImage extends MaskedImage {
    private static final int DEFAULT_CORNER_RADIUS = 3;
    private int cornerRadius = DEFAULT_CORNER_RADIUS;

    private int height;
    private int width;
    private int drawableResource;
    private int startColor;
    private int endColor;
    private Context context;


    public int getCornerRadius() {
        return cornerRadius;
    }

    public void setCornerRadius(int cornerRadius) {
        this.cornerRadius = cornerRadius;
    }

    public RoundedCornersImage(Context paramContext) {
        super(paramContext);
        this.cornerRadius = 0;
        this.context = paramContext;
    }

    public RoundedCornersImage(Context paramContext, int cornerRadius) {
        super(paramContext);
        this.cornerRadius = cornerRadius;
        this.context = paramContext;
    }

    public RoundedCornersImage(Context paramContext, AttributeSet paramAttributeSet) {
        super(paramContext, paramAttributeSet);
        this.context = paramContext;
        int[] arrayOfInt = R.styleable.RoundedCornersImage;
        int i = paramContext.obtainStyledAttributes(paramAttributeSet, arrayOfInt).getDimensionPixelSize(0, 0);
        this.cornerRadius = i;
        initDrawable(paramAttributeSet);
    }

    private void initDrawable(AttributeSet attrs) {
        TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.RoundedCornersImage);
        drawableResource = typedArray.getResourceId(R.styleable.RoundedCornersImage_my_drawable, -1);
        startColor = typedArray.getColor(R.styleable.RoundedCornersImage_start_color, ContextCompat
                .getColor(context, android.R.color.black));
        endColor = typedArray.getColor(R.styleable.RoundedCornersImage_end_color, ContextCompat.getColor
                (context, android.R.color.white));
        typedArray.recycle();
    }

    @Override
    public Bitmap createMask() {
        int i = getWidth();
        int j = getHeight();
        Bitmap.Config localConfig = Bitmap.Config.ARGB_8888;
        Bitmap localBitmap = Bitmap.createBitmap(i, j, localConfig);
        Canvas localCanvas = new Canvas(localBitmap);
        Paint localPaint = new Paint(1);
        localPaint.setColor(-16777216);
        float f1 = getWidth();
        float f2 = getHeight();
        RectF localRectF = new RectF(0.0F, 0.0F, f1, f2);
        float f3 = this.cornerRadius;
        float f4 = this.cornerRadius;
        localCanvas.drawRoundRect(localRectF, f3, f4, localPaint);
        return localBitmap;
    }


//    @Override
//    public void draw(Canvas canvas) {
//        super.draw(canvas);
//        Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), drawableResource);
//        Paint paint = new Paint();
//        Rect rect = new Rect();
//        rect.set(0, 0, getWidth(), getHeight());
//        canvas.drawBitmap(changeColor(bitmap, startColor,
//                endColor), rect, rect, paint);
//    }

//    //bitmap是图片的bitmap对象，startColor是左侧颜色，endColor是右侧颜色，
////左到右线型渐变
//    private Bitmap changeColor(Bitmap bitmap, int startColor, int endColor) {
//
//        int width = bitmap.getWidth();
//        int height = bitmap.getHeight();
//        int bitmapArray[] = new int[width * height];
//        int count = 0;
//        int redB = Color.red(endColor);
//        int greenB = Color.green(endColor);
//        int blueB = Color.blue(endColor);
//        int redW = Color.red(startColor);
//        int greenW = Color.green(startColor);
//        int blueW = Color.blue(startColor);
//        int red, green, blue;
//        for (int j = 0; j < height; j++) {
//            for (int i = 0; i < width; i++) {
//                green = (int) (greenW * (1 - (float) i / width)
//                        + greenB * (float) i / width);
//                red = (int) (redW * (1 - (float) i / width)
//                        + redB * (float) i / width);
//                blue = (int) (blueW * (1 - (float) i / width)
//                        + blueB * (float) i / width);
//                bitmapArray[count++] = Color.argb(Color.alpha(bitmap.
//                        getPixel(i, j)), red, green, blue);
//            }
//        }
//        bitmap.recycle();
//        return Bitmap.createBitmap(bitmapArray, width, height,
//                Bitmap.Config.ARGB_4444);
//    }
//
//    //下面代码增加该类对象可操作
//    public int getDrawableResource() {
//        return drawableResource;
//    }
//
//    public void setDrawableResource(int drawableResource) {
//        this.drawableResource = drawableResource;
//        invalidate();
//    }
//
//    public int getStartColor() {
//        return startColor;
//    }
//
//    public void setStartColor(int startColor) {
//        this.startColor = startColor;
//        invalidate();
//    }
//
//    public int getEndColor() {
//        return endColor;
//    }
//
//    public void setEndColor(int endColor) {
//        this.endColor = endColor;
//        invalidate();
//    }

}